﻿using Appliaction.Dto.FG;
using Domain.Entitys.FG;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Appliaction.IAppServices.FG
{
    public interface IFG_Finished_Goods_StoreService
    {
        /// <summary>
        /// 分页条件查询成品入库信息
        /// </summary>
        /// <param name="Warehouse_Code"></param>
        /// <param name="code"></param>
        /// <param name="currentPage"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        List<FG_Finished_Goods_Store_Info> Get_Finished_Goods_Store_Infos(string Warehouse_Code, string code, int currentPage, int pageSize, char auditStatus);

        /// <summary>
        /// 条件查询成品入库总数
        /// </summary>
        /// <param name="Warehouse_Code"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<int> Get_Finished_Goods_StoreCountAsync(string Warehouse_Code, string code, char auditStatus);

        /// <summary>
        /// 添加成品入库信息及其明细
        /// </summary>
        /// <param name="finishedGoodsStoreDetailsAddDto"></param>
        /// <returns></returns>
        Task<int> FG_Finished_Goods_StoreAddAsync(FinishedGoodsStoreDetailsAddDto finishedGoodsStoreDetailsAddDto);

        /// <summary>
        /// 根据成品入库编号查询成品入库信息
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<FG_Finished_Goods_Store> GetFG_Finished_Goods_StoreByCodeAsync(string code);

        /// <summary>
        /// 根据成品入库编号查询成品入库明细
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<List<FG_Finished_Goods_Store_Details>> Get_Finished_Goods_Store_DetailsByCodeAsync(string code);

        /// <summary>
        /// 修改产品入库信息及明细
        /// </summary>
        /// <param name="finishedGoodsStoreDetailsUpdateDto"></param>
        /// <returns></returns>
        Task<int> FG_Finished_Goods_StoreUpdateAsync(FinishedGoodsStoreDetailsUpdateDto finishedGoodsStoreDetailsUpdateDto);

        /// <summary>
        /// 逻辑删除产品入库信息
        /// </summary>
        /// <param name="fG_Finished_Goods_StoreDelDto"></param>
        /// <returns></returns>
        Task<int> FG_Finished_Goods_StoreDelAsync(FG_Finished_Goods_StoreDelDto fG_Finished_Goods_StoreDelDto);

        /// <summary>
        /// 修改成品入库审核状态、减少库存预计入库数量，增加库存数量
        /// </summary>
        /// <param name="fG_Finished_Goods_StoreUpdateAuditDto"></param>
        /// <returns></returns>
        Task<int> FG_Finished_Goods_StoreUpdateAuditAsync(FG_Finished_Goods_StoreUpdateAuditDto fG_Finished_Goods_StoreUpdateAuditDto);

    }
}
